目標 🎯
- モデル: 単純なソーシャルネットワーク。
- ユーザーはグラフのノードとして表現されます。
- 友達関係は無向辺です。
- 課題: コマンドの系列を処理して、ネットワークを構築し、照会します。
表現方法 💾
グラフを格納するために隣接リストを使用します。
これはリストの配列です。インデックス `i` のリストには、ユーザー `i` のすべての友達が格納されています。
// 友達関係: (0,1), (0,2), (1,2)
adj = [
0:[1, 2],
1:[0, 2],
2:[0, 1],
3:[],
]
adj = [
0:[1, 2],
1:[0, 2],
2:[0, 1],
3:[],
]
操作 ⚙️
以下の4つのコマンドを実装します:
add u v友達関係を追加する。
degree uユーザー u の友達数をカウントする。
isfriend u vu と v が友達かどうか確認する。
count_greater x友達数が x より多いユーザー数をカウントする。